/**
 * 
 */
package de.homer.server.service;

import java.io.Serializable;
import java.util.List;

import de.homer.adapter.domain.ConfiguredPlugin;
import de.homer.adapter.domain.PluginMetaInformation;
import de.homer.server.util.PluginClassLoadingException;

/**
 * @author André Stannek
 * 
 */
public interface PluginConfigurationService extends Serializable {

	/**
	 * @param metaInformation
	 *            the {@link PluginMetaInformation} of the plugin that should be
	 *            configured.
	 * @throws PluginClassLoadingException
	 *             if the class defined by
	 *             {@link PluginMetaInformation#getPluginClassName()} could not
	 *             be loaded.
	 */
	void configurePlugin(PluginMetaInformation metaInformation)
			throws PluginClassLoadingException;

	/**
	 * Returns all {@link ConfiguredPlugin}. Configured is any plugin that is
	 * activated.
	 * 
	 * @return all plugins that are configured
	 */
	List<ConfiguredPlugin> getConfiguredPlugins();

}
